import 'package:get/get.dart';
import '../../../app/network/http_client.dart';
import '../../../app/data/model/article_model.dart';

class HomeController extends GetxController {
  // 1. 可观察列表：一旦赋值，界面自动刷新
  var articles = <ArticleModel>[].obs;

  // 2. 加载标志（转圈用）
  var isLoading = true.obs;

  // 3. 一进页面就调
  @override
  void onInit() {
    super.onInit();
    loadArticles();
  }

  // 4. 拉取假数据
  Future<void> loadArticles() async {
    try {
      if (isLoading.value) return; // 防止重复请求
      isLoading.value = true; // 开始转圈
      final list = await HttpClient.get('/articles', ArticleModel.fromJson);
      articles.assignAll(list); // 填充列表 → 界面自动更新
    } catch (e) {
      Get.snackbar('错误', '加载文章失败：$e'); // 顶部弹出提示
    } finally {
      Future.delayed(
        2050.milliseconds,
        () => isLoading.value = false,
      ); // 延时50ms结束转圈
    }
  }

  // 下拉刷新入口
  Future<void> refreshArticles() async {
    print("下拉刷新");
    try {
      if (isLoading.value) return; // 防止重复请求
      isLoading.value = true; // 开始转圈
      final list = await HttpClient.get('/articles', ArticleModel.fromJson);
      articles.assignAll(list); // 重新塞海报
    } catch (e) {
      Get.snackbar('错误', '刷新失败：$e');
    } finally {
      Future.delayed(
        2050.milliseconds,
        () => isLoading.value = false,
      ); // 延时50ms结束转圈
    }
  }
}
